import {initialState as initState} from "./initial-state";


export const WEB_UPDATE_TASKS = "WEB_UPDATE_TASKS";
export const WEB_UPDATE_FILTER_CONDITIONS = "WEB_UPDATE_FILTER_CONDITIONS";
export const WEB_CHANGE_LOADING = "WEB_CHANGE_LOADING";

export const WEB_UPDATE_TREND = "WEB_UPDATE_TREND";

/**
 * 这是一个 reducer 函数，目的是根据 action 更新应用程序状态。使用 Redux 管理状态时，每个 reducer 负责管理特定部分的全局状态。Reducer 接收当前状态和传递过来的 action，然后基于这些输入返回新的状态。
 * 在上述代码中，reducer 通过对 action.type 的 switch-case 处理来选择要更新哪个状态项。对于 WEB_UPDATE_TASKS、WEB_UPDATE_FILTER_CONDITIONS 和 WEB_CHANGE_LOADING 三个 action 类型，它分别会更新状态中的 tasks、filterConditions 和 loading 字段。使用 spread 操作符，我们可以轻松地创建一个副本并设置需要更新的字段，而不修改原始状态。最后，如果没有匹配到任何 case，则默认返回当前状态。
 * 这个 reducer 函数是一个箭头函数，并使用了 ES6 的默认参数语法初始化了初始状态为 initState。整个函数被作为一个默认导出模块，以允许其他模块引用并使用它。通常情况下，当 action 对象派发到 Redux Store 中时，这个 reducer 将会被调用，从而更新应用程序状态。
 */
export default (state = initState, action) => {
  switch (action.type) {
    case WEB_UPDATE_TASKS:
      return {
        ...state,
        tasks: action.tasks,
      };
    case WEB_UPDATE_FILTER_CONDITIONS:
      return {
        ...state,
        filterConditions: action.filterConditions
      };
    case WEB_CHANGE_LOADING:
      return {
        ...state,
        loading: action.loading
      };
    case WEB_UPDATE_TREND:
      return {
        ...state,
        trendData: action.trendData
      };
    default:
      return state;
  }
};